#pragma once
#include "global.h"

/**Desktop share call func*/
typedef void (CALLBACK* INCOMMINGDATA)(ScreenHeader screenHeader,char* buf,int size);

/**Desk Topshare interface*/
class   IDeskTopShare
{
public:
	IDeskTopShare(void){};
	virtual ~IDeskTopShare(void){};
	/**init params in ScreenHeader and set call back func to start...*/
	virtual void start(ScreenHeader screenHeader,INCOMMINGDATA callback) = 0;
};

/**to show the screen image*/
class  IDeskTopClient
{
public:
	IDeskTopClient(void){};
	virtual ~IDeskTopClient(void){};
	/**set window handle where to draw*/
	virtual void init(HWND hWnd) = 0;
	/**push image data and draw in the window*/
	virtual void Set_BackGroud_Image(ScreenHeader h,char* img,int size) = 0;
};
/**create a IDeskTopShare instance*/
extern "C"__declspec(dllexport) IDeskTopShare * createIDeskTopShare();

/**destroy IDeskTopShare*/
extern "C"__declspec(dllexport) void destroyIDeskTopShare(IDeskTopShare * deskTop);

/**create a DeskTopClient instance*/
extern "C"__declspec(dllexport) IDeskTopClient * createDeskTopClient(HWND hWnd);

/**destroy DeskTopClient*/
extern "C"__declspec(dllexport) void destroyDeskTopClient(IDeskTopClient * c);